2026-10-12T21:11:56.4746383Z ##[group]Run npm run test:deploy
2026-10-12T21:11:56.4746451Z [36;1mnpm run test:deploy[0m
2026-10-12T21:11:56.4746469Z shell: /usr/bin/bash -e {0}
2026-10-12T21:11:56.4746479Z env:
2026-10-12T21:11:56.4746490Z   CARGO_TERM_COLOR: never
2026-10-12T21:11:56.4746587Z   CLOUDFLARE_ACCOUNT_ID: 1e6f2cffa3f445920836e8ebe446bb58
2026-10-12T21:11:56.4746600Z   WRANGLER_SEND_METRICS: false
2026-10-12T21:11:56.4746610Z ##[endgroup]
2026-10-12T21:11:58.4103930Z 
2026-10-12T21:11:58.4132903Z > test:deploy
2026-10-12T21:11:58.4133251Z > node --test "scripts/deploy/*.test.mjs"
2026-10-12T21:11:58.4133518Z 
2026-10-12T21:12:07.7516264Z error: no matching package named `base64` found
2026-10-12T21:12:08.0430442Z location searched: crates.io index
2026-10-12T21:12:08.0430718Z required by package `g1t-api v0.1.0 (/home/runner/work/repo/apps/api)`
2026-10-12T21:12:08.0430852Z note: offline mode (via `--offline`) can sometimes cause surprising resolution failures
2026-10-12T21:12:08.0430974Z help: if this error is too confusing you may wish to retry without `--offline`
2026-10-12T21:12:09.2138562Z ✔ the manifest matches every wrangler config in the repository (123.051568ms)
2026-10-12T21:12:09.2146665Z ✔ every wrangler.jsonc is found, and only checked-in ones (158.118011ms)
2026-10-12T21:12:09.2151882Z ✔ problems are found: an unlisted config, a later-stage binding, a wrong database, an unnamed KV (134.044177ms)
2026-10-12T21:12:09.2156358Z ✔ stages follow bindings: nothing binds to a unit that ships after it (1.600521ms)
2026-10-12T21:12:09.2156751Z ✔ inside a stage, a Worker that does not exist yet goes before those bound to it (1.624372ms)
2026-10-12T21:12:09.2176710Z ✔ Rust workers build with the shared script and the same wasm-opt level (5.666516ms)
2026-10-12T21:12:09.2188049Z ✔ shared crates and packages are read from workspace metadata (1.072991ms)
2026-10-12T21:12:09.2204283Z ✔ the runner's image is built from the runner crate and what it uses, on the base its lock names (0.93797ms)
2026-10-12T21:12:09.2219806Z ✔ services/runner/base.json records the base its folder builds (84.916001ms)
2026-10-12T21:12:09.2237990Z ✔ an image's hash ignores line endings, and its tags say what they are (578.583282ms)
2026-10-12T21:12:09.2247284Z ✔ only the lockfile entries the runner is built from name its image (1.562732ms)
2026-10-12T21:12:09.2348501Z ✔ the runner's deploy config names its image by reference, beside its wrangler.jsonc (109.634234ms)
2026-10-12T21:12:09.2350994Z ✔ the registry is asked for an image's manifest, without Docker (1.901621ms)
2026-10-12T21:12:09.2373104Z ✔ a push counts only when it ends with a digest, and is tried again (1.716801ms)
2026-10-12T21:12:09.2373275Z ✔ a static Linux binary is told from a dynamic one (2.228282ms)
2026-10-12T21:12:09.2373397Z ﹣ path dependencies agree with Cargo's own resolved graph (6514.942404ms) # cargo metadata could not resolve offline
2026-10-12T21:12:09.2374076Z ✔ every import that leaves a unit's folder is covered by its dependencies or inputs (489.670717ms)
2026-10-12T21:12:09.2374163Z ✔ a shared crate's change reaches every unit built from it, and no other (5.746456ms)
2026-10-12T21:12:09.2374245Z ✔ a shared package's change reaches what imports it (2.662112ms)
2026-10-12T21:12:09.2414177Z ✔ a crate's tests, benches and examples deploy nothing (56.126474ms)
2026-10-12T21:12:09.2487039Z ✔ a Rust file compiled only for tests is found from what declares it (6.580176ms)
2026-10-12T21:12:09.2487246Z ✔ this repository's test-only sources are read from git (805.100978ms)
2026-10-12T21:12:09.2487349Z ✔ decide: a change only to tests deploys nothing (3.179943ms)
2026-10-12T21:12:09.2487443Z ✔ own folders, declared inputs and root files (2.044442ms)
2026-10-12T21:12:09.2487541Z ✔ a Cargo.lock change reaches only crates that use what changed (0.670631ms)
2026-10-12T21:12:09.2487636Z ✔ a package-lock change reaches through workspace links (0.914621ms)
2026-10-12T21:12:09.2497259Z ✔ decide: changed units deploy, others wait, unknown ones deploy (0.603671ms)
2026-10-12T21:12:09.3180939Z ✔ decide: --force deploys unchanged units; a commit missing from history deploys (0.28877ms)
2026-10-12T21:12:09.3182900Z ✔ decide: Cargo.lock counts only where it reaches (0.896101ms)
2026-10-12T21:12:09.3199511Z ✔ decide: the runner's image rebuilds only when what it is built from changed (0.68103ms)
2026-10-12T21:12:09.3233148Z ✔ the plan as data: migrations, and each stage's units in jobs that share a build (2.678872ms)
2026-10-12T21:12:09.3233524Z ✔ units are picked by short name, folder or Worker name (0.976081ms)
2026-10-12T21:12:09.3234782Z ✔ a CI job installs only what its units need (1.847942ms)
2026-10-12T21:12:09.3319903Z ✔ a deploy is annotated with its commit, and read back (0.32234ms)
2026-10-12T21:12:09.3320046Z ✔ the live commit: the live version's, looking through secret changes (0.550611ms)
2026-10-12T21:12:09.3320116Z ✔ Wrangler's output: pending migrations and the version a deploy made (0.47041ms)
2026-10-12T21:12:09.3320171Z ✔ the API's answers: the live commit as Wrangler's would give it (2.145722ms)
2026-10-12T21:12:09.6505010Z ✔ the API's answers: a Worker never deployed, and a refusal, never throw (503.832051ms)
2026-10-12T21:12:09.6505201Z ✔ the API is used only with the token Wrangler would be given (1.215331ms)
2026-10-12T21:12:09.6505301Z ✔ pending migrations: the folder's files less the names in d1_migrations (3.010643ms)
2026-10-12T21:12:09.6936919Z ✔ the pool runs everything, no more than its limit at once (17.226356ms)
2026-10-12T21:12:09.6937180Z ✔ self-hosting builds every Rust service the manifest says it runs (3.702773ms)
2026-10-12T21:12:09.6937262Z ✔ the self-hosting architecture page names every unit (0.447321ms)
2026-10-12T21:12:09.6937341Z ✔ resolveStack works on a manifest with no workspace crates or packages (15.216454ms)
2026-10-12T21:12:09.6946416Z ✔ decide: a commit older than what runs is never deployed by accident, even forced; --rollback means it (0.78554ms)
2026-10-12T21:12:09.6992687Z ✔ a deploy by hand reports to the repository on g1t, and a workflow's does not (3.784094ms)
2026-10-12T21:12:09.6992881Z ✔ a failed wrangler command is reported by its error, not its trace (0.572541ms)
2026-10-12T21:12:09.6992977Z ✔ Cloudflare failing is tried again; a mistake in what is deployed is not (0.6886ms)
2026-10-12T21:12:10.2037507Z ✔ webhooks: the hourly purge deletes old deliveries by time (5.022475ms)
2026-10-12T21:12:10.2037945Z ✔ billing: this month's users are read from an index, not the ledger (133.086717ms)
2026-10-12T21:12:10.2038060Z ✔ events: a repository's events of one type, newest first, page by page (61.891109ms)
2026-10-12T21:12:10.2038167Z ✔ actions: a self-hosted runner's poll finds queued jobs by namespace, whatever its case (25.750944ms)
2026-10-12T21:12:10.2038273Z ✔ chat: a channel's messages and a thread's replies, newest first, page by page (3.466133ms)
2026-10-12T21:12:10.2038433Z ✔ chat: the sidebar's unread messages are read from each channel's index, after the last read (6.739587ms)
2026-10-12T21:12:10.2038523Z ✔ chat: a page's reactions are read by message, and a workspace's emoji by name (55.503123ms)
2026-10-12T21:12:10.3485594Z scheduler: g1t-webhooks (* * * * *) is still running from the last time; skipped
2026-10-12T21:12:10.5430143Z scheduler: g1t-webhooks (* * * * *): 200 {"outcome":"exception"}
2026-10-12T21:12:10.5515585Z ✔ fields read numbers, ranges, lists and steps (3.375213ms)
2026-10-12T21:12:10.6016456Z ✔ the services' crons match when hosted g1t's would fire (3.912854ms)
2026-10-12T21:12:10.6057942Z ✔ what is due is each matching cron of each service (1.109421ms)
2026-10-12T21:12:10.6094705Z ✔ a run asks Wrangler for the handler, and a slow one is not doubled (201.104382ms)
2026-10-12T21:12:11.0134922Z ✔ a deploy is announced to status.g1t.sh with the token, and without one nothing is sent (133.324407ms)
2026-10-12T21:12:11.1791013Z ✔ an announcement that fails is a warning, never a failed deploy (1.805412ms)
2026-10-12T21:12:11.1791238Z ✔ the stages run inside the window: started before, finished after, even when they throw; a dry run says nothing (1.625432ms)
2026-10-12T21:12:11.1791359Z ✔ deploy.mjs announces every deploy, and the workflow passes it the token (0.930731ms)
2026-10-12T21:12:11.1791383Z ℹ tests 63
2026-10-12T21:12:11.1791409Z ℹ suites 0
2026-10-12T21:12:11.1791438Z ℹ pass 62
2026-10-12T21:12:11.1791458Z ℹ fail 0
2026-10-12T21:12:11.1791477Z ℹ cancelled 0
2026-10-12T21:12:11.1791498Z ℹ skipped 1
2026-10-12T21:12:11.1791523Z ℹ todo 0
2026-10-12T21:12:11.1791545Z ℹ duration_ms 11987.143622
